
var rutas_h=function(opciones){
	this.opciones=opciones
	this.posiciones=[];
	this.render=rutas_c.render;
	this.agregar=rutas_c.agregar;
	this.addPrevPos=rutas_c.addPrevPos;
	if(this.opciones.posiciones.length){
		this.addPrevPos(this.opciones.posiciones);
	}
}

var rutas_q=function($){
	$.fn.rutas=function(options){
		this.posiciones=[];
		this.mostrar=rutas_c.mostrar;
		this.agregar=rutas_c.agregar;
		this.borrar=rutas_c.borrar;
		this.prepare=rutas_c.prepare;
		this.movido=rutas_c.movido;
		this.reordenar=rutas_c.reordenar;
		this.plantillas=rutas_c.plantillas;
		this.addPrevPos=rutas_c.addPrevPos;
		this.render=rutas_c.render;
		this.init=rutas_c.init;
		this.init($,options);
	}
}

var rutas_c={
	ddbb:[],
	plantillas:{
		parrilla:"<div class='controles'><input type='button' class='button mostrar' value='Mostrar en Mapa'></div><div class='ruta_container'></div><div class='reordenar'>Reordenar</div>",
		itemParrilla:"<div class='ruta ruta_#ID#'><input type='hidden' class='orden' value='#ORDEN#'><input type='hidden' class='id' value='#ID#'><img class='thumbnail' src='#THUMBNAIL#'><div class='titulo'>#TITULO#</div></div>"
		},
	init:function($,options){
		rutas_c.ddbb.push(this);
		this.payID=rutas_c.ddbb.length-1;
		this.options=options;
		this.prepare($);
		if(this.options.posiciones){
			this.render();
			}
	},
	prepare:function($){
		$(this).empty();
		$(this).append(this.plantillas.parrilla);
		
		for(var i=0;i<this.options.posiciones.length;i++){
			this.posiciones.push(mapasDDBB[0].createMarker(this.options.posiciones[i]));
		}
		var payID=this.payID;
		$(this).find(".reordenar").droppable({
			accept:".ruta",
			drop:function(e,ui){
				rutas_c.ddbb[payID].reordenar(ui.draggable);
			}
		});
		$(this).find(".mostrar").click(
			function(){
				rutas_c.ddbb[payID].mostrar();
			}
		);
	},
	mostrar:function(pos){
		var payID=this.payID;
		var userPos=dondeestoy.getPosicion(function(pos){
			var posiciones=rutas_c.ddbb[payID].posiciones;
			var marc=mapasDDBB[0].createMarker({lat:pos.coords.latitude, lon:pos.coords.longitude});
			posiciones.unshift(marc);
			mapasDDBB[0].showRuta(posiciones);
		});
	},
	render:function(){
		$(this).find(".ruta_container").empty();
		for(var i=0;i<this.posiciones.length;i++){
			var p=this.plantillas.itemParrilla;
			p=p.replace("#ID#",this.posiciones[i].datos.id).
				replace("#ID#",this.posiciones[i].datos.id).
				replace("#THUMBNAIL#",this.posiciones[i].datos.thumbnail).
				replace("#TITULO#",this.posiciones[i].datos.titulo).
				replace("#ORDEN#",this.posiciones[i].datos.orden)
				;
			$(this).find(".ruta_container").append(p);
		}
		$(this).find(".ruta").draggable({
			revert:"invalid"
		});
		$(this).find(".ruta").mousedown(
			function(e){
				this.ox=e.pageX;
				this.oy=e.pageY;
				
			}
		);
		var payID=this.payID;
		$(this).find(".ruta").mouseup(
			function(e){
				if(e.pageX>this.ox){
					var difX=e.pageX-this.ox;
					if(difX>70){
						var difY=e.pageY>this.oy?e.pageY-this.oy:this.oy-e.pageY;
						if(difY<15){
							rutas_c.ddbb[payID].borrar(this);
							}
					}
				}
			}
		);
		return false;
	},
	borrar:function(objeto){
		var payID=this.payID;
		$(objeto).stop();
		$(objeto).animate({"opacity":0,"left":"300px"},500,
			function(){
			var orden=$(this).find(".orden").val();
			var id=$(this).find(".id").val();
			var url='api/rutas/borrar?id='+id+"&orden="+orden+"&callback=rutas_c.ddbb["+payID+"].movido&idcallback="+orden;
			var script=document.createElement("script");
			script.type="text/javascript";
			script.src=url;
			document.getElementsByTagName("head")[0].appendChild(script);
			//alert(script.src);
			}
			);
	},
	reordenar:function(ruta){
		var orden=ruta.find(".orden").val();
		var id=ruta.find(".id").val();
		var url='api/rutas/reordenar?id='+id+"&orden="+orden+"&callback=rutas_c.ddbb["+this.payID+"].movido&idcallback="+orden;
		var script=document.createElement("script");
		script.type="text/javascript";
		script.src=url;
		document.getElementsByTagName("head")[0].appendChild(script);
	},
	agregar:function(marcador){
		this.posiciones.push(marcador);
		var id=marcador.datos.id;
		var url="api/rutas/add?id="+id+"&callback=rutas_c.ddbb["+this.payID+"].movido&idcallback="+id+"&mil="+Math.random();
		var script=document.createElement("script");
		script.type="text/javascript";
		script.src=url;
		document.getElementsByTagName("head")[0].appendChild(script);
		//alert(script.src);
	},
	addPrevPos:function(pos){
		for(var i=0;i<pos.length;i++){
			this.posiciones.push(mapasDDBB[0].createMarker(pos[i]));
		}
	},
	movido:function(respuesta){
		if(respuesta.error=="0"){
			this.posiciones=[];
			this.addPrevPos(respuesta.posiciones);
			this.render();
		}
	}
}

rutas_q(jQuery);